package com.sz.biz.logistics.base.service;

import com.sz.biz.logistics.base.entity.Port;
import com.sz.biz.logistics.base.dto.PortDto;
import com.sz.common.base.dto.QueryParams;
import com.sz.common.base.dto.ResultDto;

import java.util.List;

/**
 * Function: PortService <br>
 * Author: penghui.zheng <br>
 * Date: 2016-11-23 15:47:00
 */
public interface PortService {

    /**
     * 新增港口
     *
     * @param portDto
     * @return int
     */
    int savePort(PortDto portDto);

    /**
     * 修改港口
     *
     * @param portDto
     * @return int
     */
    int updatePort(PortDto portDto);

    /**
     * 根据portIds删除港口
     *
     * @param portIds
     */
    void deleteByPortIds(List<Integer> portIds);

    /**
     * 根据港口portId查询港口信息
     *
     * @param portId
     * @return PortDto
     */
    PortDto findByPortId(int portId);
    /**
     * 根据港口id查询港口短接口
     *
     * @param portId
     * @return Port
     */
    Port findShortById(int id);
    List<Port> findShortById(List<Integer> ids);
    /**
     * 根据港口portIds查询港口信息s
     *
     * @param portIds portIds
     * @return List<PortDto>
     */
    List<PortDto> findByPortIds(List<Integer> portIds);


    /**
     * 根据条件分页查询港口
     *
     * @param params
     * @return PortDto
     */
    ResultDto findPortList(QueryParams params);

    /**
     * 查询国际化数据
     *
     * @param params
     * @return 查询出的数据
     */
    ResultDto findI18nByParam(QueryParams params);

    /**
     * @param code
     * @return @
     */
    void checkCode(String code, int id);

    /**
     * 查询城市列表
     * @param countryId
     * @return
     */
    ResultDto findCityByCountryCode(String countryId);
    /**
     * 港口下拉列表
     *
     * @return ResultDto
     */
    ResultDto shortPortListPage(QueryParams params);


    /**
     * 根据条件分页查询港口-端接口
     *
     * @param params params
     * @return ResultDto
     */
    ResultDto findPortShortList(QueryParams params);
    /**
     * 英文名称和国际化同步
     *
     * @param params Port
     * @return int
     */
    int synchroPort(Port port);
    /**
     * 根据国家和城市查询港口下拉列表
     *
     * @return ResultDto
     */
    ResultDto portDropListPage(QueryParams params);

    /**
     * 按英文名称或名称来精确匹配需要的港口信息
     * @param name 中文或英文名称
     * @return 港口信息
     */
    List<Port> findPortByName(String name,String countryId);

    List<Port> portFliter(String country, String provinceId, String cityId);
}
